import jwt
import datetime
from dotenv import load_dotenv
import os

# Загружаем переменные окружения из .env файла
load_dotenv()

# Получаем секретный ключ и алгоритм из .env
PRIVATE_KEY_PATH = os.getenv("PRIVATE_KEY_PATH")
JWT_ALGORITHM = os.getenv("JWT_ALGORITHM")


def generate_jwt_token(user_id, username=None):
    """
    Генерация JWT токена с использованием секретного ключа и алгоритма.
    Токен включает идентификатор пользователя и срок действия 12 часов.
    Если передан короткий тег (username), то добавляем его в payload.
    """
    with open(PRIVATE_KEY_PATH, "r") as key_file:
        private_key = key_file.read()

    expiration_time = datetime.datetime.utcnow() + datetime.timedelta(hours=12)
    payload = {
        'user_id': user_id,
        'exp': expiration_time
    }

    if username and username.startswith('@'):
        payload['username'] = username

    token = jwt.encode(payload, private_key, algorithm=JWT_ALGORITHM)
    return token


# def verify_jwt_token(token):
#     """
#     Верификация JWT токена. Возвращает payload, если токен валиден.
#     """
#     try:
#         payload = jwt.decode(token, SECRET_KEY, algorithms=[JWT_ALGORITHM])
#         return payload
#     except jwt.ExpiredSignatureError:
#         return "Token has expired"
#     except jwt.InvalidTokenError:
#         return "Invalid token"
